use std::collections::HashMap;
struct Solution {}

fn main() {}

impl Solution {
    pub fn roman_to_int(s: String) -> i32 {
        let mut roman_int = HashMap::new();
        roman_int.insert("I", 1);
        roman_int.insert("IV", 4);
        roman_int.insert("V", 5);
        roman_int.insert("IX", 9);
        roman_int.insert("X", 10);
        roman_int.insert("XL", 40);
        roman_int.insert("L", 50);
        roman_int.insert("XC", 90);
        roman_int.insert("C", 100);
        roman_int.insert("D", 500);
        roman_int.insert("CD", 400);
        roman_int.insert("CM", 900);
        roman_int.insert("M", 1000);

        let mut ret = 0;
        let mut idx = 0;
        while idx < s.len() {
            if s.len() - idx > 1 {
                if roman_int.contains_key(&s[idx..idx + 2]) {
                    ret += roman_int.get(&s[idx..idx + 2]).unwrap();
                    idx += 2;
                    continue;
                }
            }

            if roman_int.contains_key(&s[idx..idx + 1]) {
                ret += roman_int.get(&s[idx..idx + 1]).unwrap();
                idx += 1;
                continue;
            }
        }
        ret
    }
}